package com.example.component.others;

import android.content.Context;
import android.util.AttributeSet;

/**
 * 縦用シックバー
 */
public class VerticalSeekBar extends AbsVerticalSeekBar {

    /**
     * シックバーリスナー
     */
    public interface OnSeekBarChangeListener {
        /**
         * シックバーが変更されたときにコールバック
         * 
         * @param seekBar
         * @param progress
         * @param fromUser
         */
        void onProgressChanged(VerticalSeekBar seekBar, int progress, boolean fromUser);

        /**
         * シックバーをタッチしたときにコールバック
         * 
         * @param seekBar
         */
        void onStartTrackingTouch(VerticalSeekBar seekBar);

        /**
         * シックバーをタッチを離れたときにコールバック
         * 
         * @param seekBar
         */
        void onStopTrackingTouch(VerticalSeekBar seekBar);
    }

    private OnSeekBarChangeListener mOnSeekBarChangeListener;

    public VerticalSeekBar(Context context) {
        this(context, null);
    }

    public VerticalSeekBar(Context context, AttributeSet attrs) {
        this(context, attrs, android.R.attr.seekBarStyle);
    }

    public VerticalSeekBar(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    void onProgressRefresh(float scale, boolean fromUser) {
        super.onProgressRefresh(scale, fromUser);

        if (mOnSeekBarChangeListener != null) {
            mOnSeekBarChangeListener.onProgressChanged(this, getProgress(), fromUser);
        }
    }

    /**
     * シックバーコールバックを設定する
     */
    public void setOnSeekBarChangeListener(OnSeekBarChangeListener l) {
        mOnSeekBarChangeListener = l;
    }

    @Override
    void onStartTrackingTouch() {
        if (mOnSeekBarChangeListener != null) {
            mOnSeekBarChangeListener.onStartTrackingTouch(this);
        }
    }

    @Override
    void onStopTrackingTouch() {
        if (mOnSeekBarChangeListener != null) {
            mOnSeekBarChangeListener.onStopTrackingTouch(this);
        }
    }

}
